perm filename UUO.UPD[S,DOC]146 blob sn#830315 filedate 1986-12-10 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00017 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00004 00002	This file contains corrections, additions and updates to the UUO Manual,
C00005 00003	[ALL ENTRIES BEFORE THIS HAVE BEEN INCLUDED IN UUO MANUAL, THIRD EDITION.]
C00012 00004	187.  The following new TTYSETs are defined:
C00048 00005	249.  TTYSET operation number 41 is "hang up modem", only works on DCA
C00072 00006	295.  The DPYPOS and LEYPOS UUOs now use (essentially) all 18 bits of
C00079 00007	310.  Device VRN is the Varian Plotter, driven from P2.  It can be
C00083 00008	315.  The FILUSR UUO [CALLI 400046] can be used to find out what job(s)
C00086 00009	319.  The following TTYSET functions are added:
C00091 00010	320.  The sign bit of the XGP right margin word (in MTAPEs 2 and 3,
C00100 00011	327.  Include the rest of the character codes for the Analex LPT
C00116 00012	348.  There are now terminal-input macros available on all terminals.
C00133 00013	371.  The IMP is now run using the IP/TCP protocols.  The major differences
C00146 00014	385.  IMP MTAPE 5, which under NCP returned pointers to system tables, now shows
C00154 00015	387.  Device MTU0 is a TU-78 9-track magtape drive, capable of writing at
C00157 00016	391. New CALLI to manage network interfaces:
C00160 00017	393.  SPOOLR UUO -- Get info about available spoolers on this system.
C00163 ENDMK
C⊗;
This file contains corrections, additions and updates to the UUO Manual,
including new UUOs that have been added since the manual went to press.
[ALL ENTRIES BEFORE THIS HAVE BEEN INCLUDED IN UUO MANUAL, THIRD EDITION.]

177.  TTYSET function 17 (get responsible TTY) returns -1 if no TTY
      is responsible.  Also, if you look in the system (eg, via PEEK
      or SETPR2) to find the terminal responsible for some TTY line,
      a value of 12 (TTY12) for the responsible terminal really means
      that no one is responsible for the particular TTY line.

178.  [Obsolete. See item 201.]
      A beep to a (responsible) non-ARPA PTY is a no-op.

179.  Somehow this didn't make it into the third edition:

      The SUPSOM bit (0,,1000) in the fourth word of a SETACT UUO
      activation table suppresses the CONTROL and META bits on all
      characters whose individual character bits are not on in the
      activation table.  This means that the activation table's
      character bits are used for two purposes--in special activation
      mode and in SUPSOM mode--but these two modes are not expected
      to be in use at the same time.  If SUPEOL is on, it takes
      precedence over SUPSOM.

180.  Error code 7 (GMM) to an IMP MTAPE means Gender MisMatch; ie, an
      attempt to connect two like-gendered sockets together.  Odd sockets
      may only be connected to even sockets and vice versa.

181.  XGP intercharacter spacing ('177 '1 '50 ICS) is now implemented.
      It takes one 7-bit byte as the new value for intercharacter
      spacing.  The intercharacter spacing is set to zero when you INIT
      the XGP, but is not reset to zero at any other time.  The
      intercharacter spacing value is the (positive) number of columns by
      which the X-position is incremented after each normal text
      character is printed (after the X-adjustment for character width).
      It is possible that use of this feature may generate lines that are
      too complex for XGPSER to print (usual warning).

182.  The system now allows up to =128 fonts (font numbers from 0 to =127).

183.  XGP MTAPE 7 is just like XGP MTAPE 1 (compiles a font) except that
      a four-word table follows the font identification number to specify
      which characters are to be loaded (compiled).  In this four-word
      table, each word contains the flag bits for =32 characters: the
      first word contains the bits for characters '000 thru '037, the
      next word for '040 thru '077, then '100 thru '137, and finally '140
      thru '177.  Within a given word, the flag bits occur from right to
      left in order of increasing character code, with the high-order
      four bits of each word ignored (those four bits should be zero).
      Thus bit 35 (0,,1) of the first word is the flag bit for character
      '000, bit 34 (0,,2) is the bit for '001, etc.  If the flag bit for
      a character is on, that character will be loaded when the given
      font is compiled; otherwise the character will not be loaded and
      any attempt to print that character in that font will be ignored.
      This MTAPE accepts only the uncompiled (.FNT) font format.  If the
      given file holds a compiled-format (.CFT) font, then an error will
      occur (illegal format file).  If no filename extension is given and
      no file has the given exact name, then only the additional
      extension .FNT will be looked for -- no .CFT file will be used.

184.  XGPUUO opcode 4 from the system to the Font Compiler is just like
      opcode 2 except that words 5 through 10 (octal) of the data block
      contain the four words from the user specifying which characters
      are to be compiled, in the same format as in XGP MTAPE 7.

185.  XGP ESCAPE 5 selects the font specified by the following 7-bit byte
      (e.g., '177 '5 FONT).

186.  The HNGTRP bit (bit 28--0,,200) in XGP I/O status word suppresses
      halt with error message on hung XGP (and probably hung P2).  UUOs
      take error return instead when this bit is on (just like LPT).
187.  The following new TTYSETs are defined:
	23	get GAG bit
	24	set GAG bit
	25	get NO-CONVERT bit
	26	set NO-CONVERT bit
      These bits correspond to the commands TTY [NO] GAG and TTY [NO] CONVERT
      except that TTY CONVERT clears the no-convert bit.  The GAG bit prevents
      anyone from linking to the terminal via the TALK command, and also
      prevents TTYMES to the terminal (except TTYMES to SIXBIT /TTY/ from the
      attached job).  GAG does not prevent beeps.  The no-convert bit
      applies only to physical terminals (not PTYs) which are not displays;
      when the bit is off (the default), the characters altmode, right brace,
      tilde, and not-equal are converted on input and output as they are for
      ARPAnet PTYs.  This means also that when the bit is off, only octal 33
      is interpreted as altmode on input.  If you have an old model 33 you
      may need to say TTY NO CONVERT or set this bit.  TTYSETs 23 and 25
      return the value 0 or 1 (all but bit 35 returned zero).  24 and 26
      use bit 35 of the TTYSET command word to set the bit.

188.  TTY image modes 10 and 11.  These modes permit input and output of
      all characters including null and ↑C, with no conversion, filling,
      etc.  If either of these modes is set in TTY IOS either by INIT or
      by TTYSET (or SETSTS), then filling and code conversion are disabled
      for any form of I/O, TTYUUO as well as buffered INPUT or OUTPUT.	In
      addition, beeps to the terminal are disabled.  Further effects for
      output: OUTCHR accepts 8-bit characters and does not generate
      parity.  (OUTSTR and other inherently 7-bit output methods still
      generate parity.)  For the OUT and OUTPUT UUOs, parity is not
      generated, and nulls will be output, if and only if the byte size
      of the byte pointer in the users buffer header is 9 or more.  (The
      user must set this after INITing the channel.)  The number of
      characters typed will be exactly the number deposited into the
      buffer by the user, so padding nulls in the last word in use in the
      buffer will not be sent.	Further effects for input: The eighth
      (parity) bit is made available to the user, and nulls are allowed.
      The 400 bit will be on in all characters input, to allow nulls.
      (A zero character is not allowed internally in the monitor.)  This
      bit may be ignored, except that it distinguishes a typed null from
      a padding null in buffered input.  (The user's buffer header must
      specify a byte size of at least 9, of course, to see that bit.)
      INCHRW and INCHRS will return 9-bit characters.  The line-at-a-time
      TTYUUOs (and RDLINE) should not be used while the TTY is in image
      mode, since line activators are not well-defined.  Modes 10 and 11
      are exactly the same on output; the difference on input has to do
      with when the program is awakened on an IN or INPUT UUO: in mode
      10, the UUO will return when any number of characters (greater than
      zero) are waiting; in mode 11, the program is not awakened until
      the TTY input buffer is half full.  The TTYSKP UUO can be used to
      find out if an INPUT will return immediately.  Modes 10 and 11 are
      undefined for local (DD and III) display terminals; in particular,
      they are not a good way to try to trap CALLs.  However, they do work
      on Datamedias; while a DM is in image mode, the DM output queues are
      disabled, and output will come only from the TTY output buffer.
      Also, the line editor is disabled for input, as are escape commands.
      (NUL is passed to programs in this mode.)

189.  The LOGIN UUO is legal only if JACCT is set, not whenever JLOG is off.

190.  New UFD format:
	words 0-3:  same as before
		4:  file length in words
		5:  BYTE (15)date written in system date format (21)time written
			in 15ths of a second after midnight *
		6:  last referenced date **
		7:  last dumped date **
	    10-11:  not used (yet)
	       12:  SATID (may be changed)
	    13-16:  4 words of special file info (as in disk MTAPEs 10 and 11)
	       17:  file offset (1 less than first logical record # in the file)
      *  The low order bit of this word is 0 for PST and 1 for PDT.
	 This date is always in Pacific Standard Time.
      ** These two words have the same format as they do in long LOOKUP blocks.
      This format does not apply to the MFD.

191.  New disk MTAPE 26:
	MTAPE CHN,[	'GODMOD'
			26
			'filename'
			'extension',,ERROR CODE
			UNUSED (must be zero)
			'ppn'
			ADDRESS OF 20 WORD BLOCK FOR UFD ENTRY TO BE STORED IN
				]
	ERROR RETURN
	SUCCESS RETURN
      Does a LOOKUP using the given information, but instead of storing what's
      normally put in a lookup block, it stores the 20 word ufd entry  starting
      at the address specified in the MTAPE block.  If the file being looked up
      is a UFD, the system generates a "ufd" entry and stores that rather than
      the actual entry from the MFD.  If the LOOKUP fails, then nothing is
      stored except the ERROR CODE, which should be interpreted the same as the
      the ERROR CODE for a normal LOOKUP.

192.  Include NEWPRV.JBR[S,DOC].

193.  TTYSET 27 and TTYSET 30 are get and set, respectively, for the
      "no-peek" bit.  This bit is totally unused by the monitor, but is
      set by LOGIN and other programs that read passwords during the
      time a password is in the TTY input buffer.  The PK program reads
      this bit and doesn't display the TTY's input buffer when it's on.

194.  New disk MTAPE 27:
	MTAPE CHN,[	SIXBIT /GODMOD/
			27
			UFD'S PROTECTION WORD STORED HERE
			UFD'S FILE INFO WORD 3 STORED HERE (DEFAULT PRO/GRP ACCESS)
				]
	ERROR RETURN, NO LOOKUP DONE
	SUCCESS RETURN
      If a LOOKUP has been done on CHN, then the MTAPE returns the protection word
      and the default protection/group access word of the UFD of the file looked up.
      If the file itself is a UFD then the "UFD" protection word is that of the MFD
      but the "UFD" default protection/group access word is that of the UFD (i.e.,
      the file looked up) itself.

195.  Update page 164 describing the 4 words of special info stored for a UFD on
      the disk:
	word 3: bits 10:35 are the group access bits for the UFD.

196.  "JOBNM1" at top of on p. 253 (Job Data Area) should be "JOBTM1".

197.  New low core pointer, location 261 points to the cell DAYLIT which
      is non-zero for daylight savings time.

198.  ENTER no longer lets you set the creation date of a file.  It is set
      to the current date when the ENTER creates the file, and is copied
      from the old version when the ENTER supercedes a file.

199.  New UUO: STDTIM AC, (CALLI 400055) is like ACCTIM but returns Pacific
      Standard Time.

200.  New XGP MTAPEs.

		MTAPE <chan>,ADR

	ADR:	10
		<number of scan lines output is returned here>

      MTAPE 10 returns the number of scan lines queued for output to the
      XGP since you inited the XGP.


		MTAPE <chan>,ADR

	ADR:	11
		<number of real formfeeds already output is returned here>

      MTAPE 11 returns the number of formfeeds (014's) that you have output
      that have already been sent to the XGP (not just queued -- however,
      the actual paper cut occurs about 25 seconds after the formfeed
      itself has been sent).

201.  PTYs are initialized with the GAG bit on.  The GAG bit is checked
      when the monitor decides whether or not to permit a TTYMES or BEEP
      to a PTY.  IMPBIT is no longer checked in this regard.  When a BEEP
      to a PTY is GAGged, the BEEP is given instead to the job owning the
      PTY.  BEEPs are never GAGged on non-PTYs.

202.  The GETPPN UUO, when given by a job with JACCT set, ignores jobs
      which don't have JLOG set in deciding whether or not to take the
      skip return.

203.  When a spacewar module is started, AC 7 contains the protection of
      the upper segment.

204.  The SWAP UUO, when starting a new job, will set the alias of the
      new job equal to that of the old job iff the PPN specified for the
      new job (word 5 of the argument block) is zero.  (Otherwise the
      new job is started with no alias, as before.)

205.  Typo on p. 84.  Sample UUO call "SHOWIT AC" should be "SHOWIT AC,".

206.  XGP appendix should explain difference between mode 0 and mode 13.
      (Which I think is that in mode 13 the byte size is 36.)

207.  TTYSET function 31 clears the line editor if the terminal is a display.

208.  XGP ESCAPE 6 is "select font and align at top".  '177 '6 <font number>.
      A relative baseline adjust is done to make the newly selected font
      line up at the top with the top of the previously selected font,
      unless no chars have been output on the current text line, in which
      case XGP ESCAPE 6 is the same as XGP ESCAPE 5 (font select).

209.  Any file LOOKUP error from a SWAP UUO trying to start up a new job
      stops the new job, not the old one.

210.  The INTIMS interrupt is given to the logger when an "interesting" RFC
      (ie, 1≤socket≤777 and socket is odd) comes in.  No network channels
      need be opened (in fact, the logger doesn't have any channels open).
      A job becomes the logger by setting the "LOGGER" cell in the system.

211.  The LGONCE bit (4000,,0) in the IMPSTB word says that the logger has
      already looked at this socket.  The system doesn't use this bit, but
      the user mode logger sets and uses it to avoid trying to service the
      same RFC twice.

212.  Following a conversation with Postel, interesting sockets now stop at
      377 instead of 777; sockets 400 and up are "private sockets".

213.  Sockets may be gensymmed by using -1 in the connect MTAPE block instead
      of a socket number.  A gensymmed socket is picked such that the next 5
      sockets are free.

214.  Spacewar process timeout causes the job to get SPACEWAR LOSSAGE and to
      to be stopped.

215.  Note that since the PTOCNT UUO gives you the number of characters in
      the output buffer, and since characters are transmitted on DMs from
      the DM queues instead of from the output buffer, you cannot use the
      PTOCNT UUO on a DM to decide whether or not the next PTRDS UUO will
      wait.  See item 221 below for the solution to this problem on DMs
      (also useful on other PTYs).

216.  IMP MTAPE 21 will return a gensymmed receive socket.  Gensymmed sockets
      are picked so the next 7 sockets (ie, a cluster of 8. sockets) are free
      as well as the gensym one.  The socket is returned in the second word
      of the MTAPE block.

217.  Note that only receive sockets may be gensymmed by IMP MTAPE 1.  An
      attempt to gensym a send socket will return the GMM error.  There
      shouldn't be any reason why somebody would want to gensym a send
      socket, of course, nothing prevents doing an MTAPE 21 and adding 1 to
      the returned value.

218.  SIXSER sends a 0 and a -1 in the date message to verify all bits.

219.  New TTYSETs:
	32	gets the temporary gag bit
	33	sets the temporary gag bit to given value in low-order
		bit of the function word.  The temporary gag bit is
		automatically cleared by the RESET UUO.

	34	makes the tty an IMP tty (sets IMPBIT) provided it is a pty.
	35	makes the tty a DM (sets DMLIN) provided it isn't already a display.

      On setting IMPBIT and DMLIN:

      It is now impossible to set either of these two line characteristics
      bits with the SETLIN or PTSETL UUOs or TTYSET function 1.  Only the
      two new TTYSET functions (34 and 35), which explicitly set these
      respective bits, are legal.  So if you have any programs that try to
      set either of these bits, you should convert to using the new TTYSET
      functions.  There is no indication of failure by SETLIN, etc., to set
      these bits other than the fact that the bits don't get set.

220.  PTWR1S/W uuos can no longer send ESCAPE/BREAK/CLEAR characters.  An
      attempt to do such gets illegal uuo error message.  TTYSET function 4
      should be used to send escape commands, and TTYSET function 31 can be
      used to clear the line editor.

221.  PTRDS UUO will never wait (not even for the first char) if the 40,,0
      bit is on in the byte pointer/address word that points to the place
      for the returned string.

222.  The functions of the LOGGER are now in the monitor.  The exec mode
      logger is disabled from firing up servers if MAINTM is set.  The
      job name = [LOGR] mechanism is gone.  The INTIMS mechanism still
      exists for the special user mode logger, which is normally not run.

223.  IMP MTAPE 13 has been recycled to mean "curse IMP".  It brings the
      NCP down and sets a flag to keep it down until an IMP MTAPE 12 is
      done.  MTAPE 13 requires an argument of SIXBIT/KILIMP/.  It is an
      Illegal UUO if it is not given this argument.

224.  Using ARPAnet sockets which are not in your working set as defined
      by the gensym mechanism is now reported on the CTY and on the user's
      console.	It is not an error to do so (yet).  The UPG privilege
      prevents this message (ie, programs which wish to use arbitrary
      absolute sockets should enable UPG first).  [yes, I know it's a
      crock]

225.  An IMP going down message no longer brings down the NCP in itself.
      It does print a warning message on the console though.  Later on
      it will warn users too.

226.  The NCP will now reliably go down when the IMP goes down.

227.  TTYSET 36 and 37 get and set the TTY GLASS bit.  If the bit is on,
      rubout echos as bs-sp-bs instead of using the backslash notation.
      Ignored on displays.

228.  The NCP will now reliably go up when the IMP comes up.

229.  OBSOLETE.

230.  New KILL UUO for the spy to autologout inactive jobs.  Killer job
      must have the MESPRV or this UUO won't do anything.

		MOVEI AC,<job number>
		KILL AC,

231.  New DETACH function for PTJOBX UUO (function 10) detaches
      the job that is on a given tty.

		PTJOBX ADDR

	ADDR:   <tty/pty to affect>
		10                      ;or SIXBIT /DETACH/

     This function skips on success (including if there is no job on the
     given tty).  The direct return is taken if there is already a
     forced monitor command pending for the given tty (in which case,
     you can try again momentarily and it will probably work).

232. SUPACT, SUPSCM, SUPALL, SUPSOM bits in SETACT UUO's fourth word
     all work for non-displays as well as for displays.

233. PTY writing UUOs can send 9-bit chars except to a PTY owned by
     the job giving the UUO.  The chars ↑C, ↑B, ↑U, etc., which are
     normally intercepted specially by the monitor for control
     functions, are interpreted as SU-AI graphic chars instead when PTY
     written by a non-owner (e.g., when PTY written to self).  The owner
     job can use the Backnext commands (e.g., ↑←C) to cause bucky bits
     to be added to characters and to send the graphic chars ↑C, ↑B, ↑U,
     etc.  "Owned" means the job got the PTY by PTYGET UUO.

234. IMP MTAPE 23 takes an argument of a host down code, as follows:
       RH:  Time expected back up:
          007777 bits → when we are expected back up.  7776 means unknown,
                 7777 means over a week from now.  Otherwise:
          007000 bits → day of week (0 = Monday, etc.)
          000760 bits → hour
          000017 bits → minutes/5
            Time is in GMT.
       LH:  Why we are unavailable:
         000017 Host dead reason:
                 0 → IMP sets this (random network lossage)
                 1 → IMP sets this (we took down ready without saying why)
                 2 → IMP sets this (we are tardy)
                 3 → IMP sets this (we don't exist to the knowledge of the NCC!)
                 4 → NCP initialization
                 5 → Scheduled preventative maintenance
                 6 → Scheduled hardware work
                 7 → Scheduled software work
                10 → Emergency restart
                11 → Power outage
                12 → Software breakpoint
                13 → Hardware failure
                14 → Not scheduled up
                15 → unused
                16 → unused
                17 → Coming up now
      The 777700,,770000 bits are ignored.  This UUO is used to tell the IMP
      why we are down for later when we go down.


235. The NUL: device now exists.  It is a black hole; on input it
     provides an immediate EOF and simply slurps up and discards all
     output.

     NUL: simulates most devices reasonably, however it has the
     device characteristics of no device (except that it can do input,
     output, and has a long dispatch table).  Also, you shouldn't
     expect the more esoteric UUOs for these devices to necessarily
     "do the right thing" (like IMP MTAPEs!).  ENTER, LOOKUP, RENAME,
     will always skip return without any argument checking, and USETO,
     USETI, UGETF, CLOSE, UTPCLR, and MTAPE are no-ops.

236. Don't expect the 777400,,770000 bits in IMP MTAPE 22 to be zero, although
     this is usually the case.

237. The TTYUSE bit, bit 5 (10000,,0), is no longer returned by the DEVCHR
     UUO (apparently it hasn't been since 1975).

238. IMP MTAPE 22 sends a reset to the host in the first word of the argument
     block.  It requires the job to enable UPG.  Don't do this unless you know
     what you're doing.  The other dangerous IMP MTAPEs have been changed to
     require the job to enable UPG (which any job can).

239. Reset Reply now purges our tables the way reset does.  A heinous bug
     in reset fixed.

240. The IMP service now has full 96.-bit leaders and can address the full
     range of hosts (all 2↑24 of them) on the network.  Look at
     IMPSER.DOC[SS,SYS] on page 9 for more details.

241. IMP MTAPE 7 has been changed to accept a listen-style block and return
     one with the foreign host/socket filled in.  The only use for it is to
     know where to hack after a non-waiting listen.

242. IMP MTAPE 5 has been changed to return a set of addresses.  It is only
     really useful to IMPSTA.  Look at IMPSER.DOC[SS,SYS] if you're really
     interested in what these values are.

243. TTYSET 40 is SET SPEED for an auto-baud-detect line on the DCA
     scanner.  The allowed arguments are
	0	110 baud
	2	150 baud
	3	300 baud
     in the right half of the command word.

244. The following references to the value 20 in the UUO Manual should
     substitute "DPYL0" for "20".  The value DPYL0 is equal to SCNNUM
     (the number of non-display TTYs), whose value is given in the
     high-order 9 bits of the word at Low Core location 221.
	(a) The TTREAD UUO's main description.
	(b) The TTREAD UUO's description of bits 12:17.
	(c) The description of Low Core location 237 (LETAB+20, should
	    be LETAB+DPYL0).  Flush explicit name of first III's TTY.
	(d) The description of Low Core location 303 (ASTAB).

245. The following references to the value 26 in the UUO Manual should
     substitute "DDL0" for "26".  The value DDL0 is equal to SCNNUM+DPYNUM.
     The values of SCNNUM and DPYNUM are contained in the first two 9-bit
     bytes of the word at Low Core location 221.
	(a) The description of bits 11:17 in a Video Switch Request for
	    the VDSMAP UUO.
	(b) The description of Low Core location 335 (VDTIE).

     Also, the last example under the VDSMAP UUO should be changed to use
     a different line number when TTY26 is no longer a DD.

     Also, Low Core location 237 should be described as containing
     LETAB+DPYL0, where DPYL0 is equal to SCNNUM (the first 9-bit byte
     of Low Core 221).

     Also, the description of Low Core location 270 (PTYJOB) should say to
     index into the PTYJOB table with the PTY's line number minus PTYL0,
     where PTYL0 is one more than the sum of the first three 9-bit bytes
     in Low Core 221.

246. [Modified by entry 268 on next page.]
     In buffered mode, an IN or INPUT UUO with a nonzero address field
     (actually an address field ≥4) changes the buffer address of the
     next buffer to be filled by the system to the address given.  (The
     specified value is stored in DEVIAD in the DDB.)  It is the user's
     responsibility to ensure that the address points to the second word
     of a buffer in a well-formed buffer ring, and to update the 3-word
     buffer ring header.  The UUO does not actually do any input.  The
     proper sequence to move a buffer ring is
	1. Do the IN CH,ADDR as described above
	2. BLT the buffers, and modify the address pointers
	3. The next IN (or INPUT) will use the new buffers.
     It is not necessary to do a WAIT UUO before the IN CH,ADDR since
     that UUO does a WAIT before modifying the address.  Note that the
     argument is the address of the next buffer into which the system
     should transfer data, not the next buffer from which the user will
     read data.

247. LASTDISASTERTIME now contains the time of the last call into EDDT,
     in ACCTIM format.  Parity errors also set this guy.

248. The status bits as returned by several IMP MTAPEs now includes the
     following host down information.
       Code=0 → Host up or down status unknown.
       RH:  Time expected back up:
	  777700 bits → when host is expected back up.	7776 means unknown,
		 7777 means over a week from now.  Otherwise:
	  700000 bits → day of week (0 = Monday, etc.)
	  076000 bits → hour
	  001700 bits → minutes/5
	    Time is in GMT.
       LH:  Why host is unavailable:
	 000017 Host dead reason:
		 0 → unknown
		 1 → Host took ready line down without saying why
		 2 → Host is tardy
		 3 → Host does not exist (to the knowledge of the NCC)
		 4 → NCP initialization at the remote host
		 5 → Scheduled preventative maintenance
		 6 → Scheduled hardware work
		 7 → Scheduled software work
		10 → Emergency restart
		11 → Power outage
		12 → Software breakpoint
		13 → Hardware failure
		14 → Not scheduled up
		15 → unused
		16 → unused
		17 → Coming up now
	 000360 Host inaccessable reason:
		 0 → Destination IMP unreachable
		 1 → Destination host dead
		 2 → Communication with destination host is impossible,
		      because they don't have the extended leader capability
		      and some turkey moved us out of the 0-377 address range.
		 3 → Communication with destination host is prohibited
		≥4 → unused
249.  TTYSET operation number 41 is "hang up modem", only works on DCA
      port with modem control.  No-op if not implemented.

250.  CALLI 400057 is WHOAMI.  No argument.  Compares your jobname to a list
      of jobnames the system knows about; if you're in the list it saves
      your job number in a cell in the system for whatever purpose the
      system has in mind.  However, if there is already a job that has
      claimed to be who you are claiming to be, then the other job continues
      and your job is stopped with an error message.  So far the only name
      in the list is WHOPHN, for the phantom job which writes the display on
      the available channel.  RESET clears the cell if you are the magic
      job.

251.  Include DLNSER.DOC[SS,SYS].

252.  TTYSET setting operations can be performed on specific TTYs just like
      getting operations -- the 400,,0 bit must be on and the TTY number
      should be in the 177,,0 bits of the function word.  However, you can
      do setting operations only on TTYs that are yours (i.e., (1) the TTY
      your job is running on, (2) an INITed or ASSIGNed TTY, or (3) a PTY
      that you own).  Setting operations on other TTYs are no-ops, with no
      indication of failure.

253.  In the UPGIOT UUO for a DM, the DMATXY bit (200,,0) in the left half of
      the first header word means that when this user display program finishes,
      any entries in the wholine queue for this DM should be flushed (to
      establish cursor stability briefly).  Also, the DMXLE bit (100,,0)
      will suppress all but UPGIOT output to the DM until this transfer
      has finished.  This is needed if this transfer is a text shifting
      operation and you want to position the line editor somewhere in the
      middle of the screen *after* the shifting is finished but you want
      to use overlapped mode instead of waiting for the shift to finish.
      Note also that the DMXLE bit on in a user program header block flag word
      means that user program output is given highest priority until the given
      user display program has finished.  Thus the line editor and page printer
      cannot even start before the user program, much less interrupt it.

254.  Setting a TTY's WIDTH value to ddd, where =128 ≤ ddd ≤ =255,
      completely suppresses the monitor's normal insertion of CRLFs for
      long lines on the TTY.  The TTY width can be set with TTYSET UUO
      function 5 and with the TTY WIDTH command.

255.  DEVOAD and DEVIAD no longer contain PROG in index field (LH);
      haven't for a long time.

256.  The CORE UUO does not guarantee that new core is zeroed before being
      given to the user job; in fact, it is likely to contain randomness.
      A properly written user program isn't be affected by this.

257.  TTYSETs 42 and 43 get and set, respectively, the job number whose
      wholine is displayed on the given terminal.  Function 42 returns -1
      if the terminal is not a display.

258.  When displaying in graphics mode on DDs, one has to display every
      fourth line in order to win.  When displaying consecutive lines,
      besides being atrociously slow, the DD also refuses to display more
      than 6 graphic lines per UUO.  The trick is to output every 4th line
      and then go back to fill in every line = 1 mod 4, etc.

259.  New TTYSETs:
	44	Get current padding character for DM.  Returns -1 if not DM.
	45	Set padding character for DM.  No-op if not DM.
	46	Get baud rate used in DM padding calculation.  -1 if not DM.
	47	Set baud rate used in DM padding calculation.  No-op if not DM.

260.  New AAO privilege (4.4 bit) says you have ownership rights to your
      disk PPN when set in passive privileges (JB2PRV).  When set in active
      privileges, does something completely different (for a good time, read
      the code).  AAO goes away on an ALIAS monitor command or a DSKPPN UUO
      which sets your disk PPN.

261.  New SETPPV UUO, CALLI 400124, sets passive privileges (JB2PRV) from
      its argument, requires AAO active.

262.  TTYSET 14 -- diddle special DM bits -- has two new operation bits
      (which appear in the right half of the function word):
	Bit 29  0,,100	Flag this DM as a model 3025.
	Bit 28  0,,200	Flag this DM as not a model 3025.
      Currently, the significance of being flagged as a model 3025 is that
      different padding is used, DM128 is assumed (can display control
      characters), and when the cursor is supposed to be "off screen", it
      is positioned at home instead (since the 3025 cannot make the cursor
      disappear.

      The DM3025 bit appears in the right half of the DM flag word,
      which is returned by TTYSET 21.  DM3025 is 0,,200 (bit 28) in DMFLAG.

263.  The DDCHAN UUO, if bit 2 (100000,,0 bit) is set in the AC and if you
      have the DEV privilege ACTIVE, takes bits 10-17 (377,,0) of AC as the
      use code instead of using your job number.  DEVPRV must be SETPRVed.

264.  As of 8.73/A, the LOGIN UUO allows a phantom (ie, a job with JLOG off)
      to set its PPN.  It will not allow the phantom to set its privileges;
      nor will it set JLOG (ie, the phantom remains a phantom).  This allows
      FTP programs to win without running with the REA and WRT privileges.
      Previous systems make LOGIN illegal unless JLOG is clear and JACCT is
      set.

265.  The UUO Manual's sample calling sequence for the TMPCRD UUO uses
      the TMPCOR UUO by mistake.  Should say "TMPCRD AC,".

266.  8.73/A allows the "read info" MTAPE function for DSK, however, the
      password is not returned unless the INF privileged is enabled.  Previous
      systems make this an illegal UUO unless INF is enabled.

267.  Only a DISMIS UUO may be used to dismiss a KA-10 spacewar program.
      All other UUO's are illegal on the KA-10.

268.  A buffered mode IN or INPUT with nonzero eff. addr. (actually must be >3)
      now checks the argument to make sure the buffer pointed to is empty, i.e.,
      the word at the specified address must have its sign bit off.  If not, the
      UUO searches through the buffer ring and uses the first empty buffer it
      finds.  If all buffers are full, it uses the one pointed to by the UUO.
      If it tries 100 (octal) buffers without finding either an empty one or
      the end of the ring, it goes to UUOERR.  This means the new buffers must
      be set up before doing the UUO; the new sequence of events is
	1.  Do a WAIT
	2.  Move the buffers around in core
	3.  Do the IN UUO

269.
∂14-Nov-78  0521	TVR  	ADSMAP   
CAVEAT:	If you have more than one job connected to your Datadisk console and
	you do a temperary audio switch selection via ADSMAP, a RESET on any
	of your jobs will cancel the selection even if that job was not the
	one which made the selection.

Perhaps this should be noted in the next UUO manual?

270.  [THIS ENTRY IS NOW OBSOLETE!  SEE 272 BELOW.]
      New procedure for moving output buffers (cf. 268 above):
	1.  If you have a partially filled output buffer, output it by
	    OUT or OUTPUT UUO.
	2.  Give an OUT or OUTPUT whose effective addr points to any
	    of what will be the new output buffers.  This UUO will
	    force out any waiting buffers, put the new buffer address
	    into the buffer ring header, and set the sign bit of the
	    first word of the header to indicate that the new ring
	    is not initialized.
	3.  Now set up the ring pointers in the new buffers.
	4.  Now do an OUT or OUTPUT (eff addr 0) which will simply
	    check the new buffer ring and make it ready for use, not
	    actually causing any output.
      This procedure will work even if the old and new buffer areas
      overlap.  If, however, you have a partially filled buffer you
      don't want to output until after you move the buffers, you have
      to do steps 2, 3, and 4, then move the data from the old buffer
      into the new buffer, being sure to keep the byte pointer in the
      buffer header correct.

271.  RUNMSK, GDPTIM, and LTHUUO are now completely flushed.

272.  270 is obsolete.  New procedure for moving output buffers:
      First move the buffers, then do the OUT UUO with nonzero E.
      This will find the first empty buffer after a full buffer
      and set DEVOAD to it.  You set up the buffer header yourself,
      as for input.

273.  LIV privilege now means only that the job is never auto-logged-out
      (it may be detached).  It is a passive priv but explicitly disabled
      whenever any program is run by monitor command.  New passive priv
      DET means that auto-detach is preferred to auto-logout; can be
      set by anyone by command or UUO.  (DETPRV = 0,,100000)

274.  Location 341 points to the DDBCNT job table.  This table has one
      word per job number, which is AOSed on an INIT or OPEN for any
      device other than TTY or DSK (or new-style UDP), and on an ENTER
      on DSK (or...).  It is SOSed on RELEASE of non-DSK, non-TTY, and
      either on CLOSE or RELEASE of a disk channel open for writing.
      It is zeroed on RESET.  The table is meant to help smart autologout;
      the spy will prefer to log out jobs for which this entry is zero.

275.  The owner of a PTY gets (if enabled) the INTTTC interrupt (100000,,0
      bit) if the PTY becomes a DM or a non-DM, or goes into or out of
      image mode.

276.  Section 13.4 on DM display output should mention that the character
      33 sent to a DM128-type Datamedia causes the next character to be
      displayed no matter what it is (even if it is a control character).
      For DM3025-type DMs, however, the next char is displayed only if it
      is a control character (0:37) or 177 (the remaining characters may
      cause control functions when following a 33 on a DM3025).

277.  The P2UUO UUO (CALLI 400125) is used to test and modify the state of
      P2 in a FTP2SP system.  The AC field of the UUO (not the contents of
      the AC, but the field itself) determines the precise UUO function:
			0 - TEST P2 MEMORY UP
			1 - TEST P2 RUNNING
			2 - SET P2 MEMORY UP
			3 - SET P2 MEMORY DOWN
			4 - GET P2 MEMORY AS HISEG WRITEABLE
			5 - GET P2 MEMORY AS HISEG WRITE PROTECTED

      Function 0 takes the skip return if P2's memory is working and
      connected to the system.  It takes the direct return if the memory
      was nonexistent when the system was reloaded or has been declared
      down at reload or while the system was running.

      Function 1 takes the skip return if P2 is actually running its
      system.  (The P2 system might be hung, or even halted, but it
      has set the flag saying it's up and has not been declared down
      by either processor.)

      Function 2, which requires the DEV privilege, declares that P2's
      memory is now online if it had been down.  Note that if the memory
      is really still not connected, this will crash the system!  This
      function always takes the direct return.  (It stops the job if
      not privileged.)

      Function 3, which also requires DEV, declares P2's memory down.  It
      stops the P2 system if it had been running.  It takes the skip
      return if successful--it requires three pages of other memory to
      be available to hold the system data normally shared between the
      two processors.

      Note that functions 2 and 3 require the DEV privilege in the job's
      ACTIVE privileges.

      Functions 4 and 5 get all of P2 memory as your job's upper segment,
      writeable or write protected respectively.  They both take the skip
      return if successful.  They will fail if P2 memory is down; function
      4 will also fail if you do not have the ACW privilege enabled.

278.  The PHPEEK UUO (CALLI 400126) takes a fullword physical address in
      the AC argument and returns in the same AC the contents of that
      word of physical memory, or zero if there is no such word.  Note
      that, although the highest possible address is only 22 bits long,
      bits 0:13 of the argument must be zero or the UUO will just return
      a zero result.  If P2 memory is up, it is in words 14 000 000 through
      14 377 777 of P1 physical address space.  P3 memory is not on P1's
      memory bus, and cannot be read with this UUO.  The PEEK UUO has been
      modified so that it interprets its argument as an 18-bit exec
      virtual address, ignoring the left half of the argument word.

279.  The PTRDS UUO checks only the 7700,,0 bits of the possible byte
      pointer to determine whether to keep the specified byte size and
      position or to use 7-bit bytes starting in the high-order byte
      of the addressed word.  Thus, the user can specify any byte-size
      such as 9-bit bytes in order to detect image mode output characters
      that have the 400 bit on.

280.  XGP error code 5 now means data missed in either buffered mode or
      dump mode.  This error comes along with the I/O status error bit
      IODERR (0,,200000).

281.  INTFOP bit (40000,,0) in interrupt enablings gets interrupts when
      user on PTY flushes output (i.e., types ↑O if not on DM, or types
      EDIT-CLEAR if on DM).  The job controlling the PTY gets the
      interrupt (not job running on PTY).  The telnet servers will detect
      this interrupt and tell the network to flush any outgoing text that
      is in transit.

282.  DM display program output (UPGIOT) that does inserts and deletes
      to move text around on the screen should be done with the USERGO
      bit set to prevent interruption while other pieces of the screen
      (e.g., the page printer and line editor) are temporarily in the
      wrong place.

283.  TTYJOB UUO should say zero is returned if there is no such job.

289.  (obsolete)

290.  PTJOBX function 11 is PDETACH, which is just like DETACH (10)
      except that if successful in the detach, it also makes the
      detached job a phantom (i.e., turns of JLOG).

291.  TTYSET function 50 gets the NO-DELETE bit and TTYSET function 51
      sets this bit from the low-order bit of the function word.  The
      NO-DELETE bit is also set by the command TTY NO DELETE and cleared
      by TTY DELETE.

292.  Meaning of FULTWX:
	FULTWX on means that the line is "self-echoing full duplex", i.e.,
	system echoing is not necessary.  TTY ECHO clears FULTWX, and 
	TTY NO ECHO sets it.  (The manual has these two commands interchanged.)

293.  LASTDISASTERTIME (low core pointer at 256) contains DATE,,TIME IN SECS
      (not uptime as previously claimed).

294.  In the SWAP UUO, if the core size specified in the GETADR section is
      zero, the new program is given the amount of core that it was saved
      in.

295.  The DPYPOS and LEYPOS UUOs now use (essentially) all 18 bits of
      position for DMs, in order to allow positioning even beyond line 36
      on a (possibly simulated) DM.  The interpretation of the position is
      the same as before (1000 octal is the top of the screen and -1000 is
      the 24th line; lines beyond the 24th are addressed by decrements of
      2000/24 per line).  Also, the maximum permissible DM screen height
      allowed by the system is now 62 (decimal) lines.  (For IIIs and DDs,
      there is no effective change, since the whole III and DD screen
      could already be addressed.)  In actuality, the 400000 bit in the
      LEYPOS address field is ignored except that this bit can be set
      non-zero to ensure a non-zero value in the address field (a zero
      value undoes any previous LEYPOS in effect).

296.  Lowcore 257 contains the address of TIMDAT (date,,time in secs).

297.  IMP MTAPE 24 will attempt to unwedge a connection in allocation wait.
      This function requires UPG and is intended for network wizards only,
      as it randomly mauls a connection's allocation (essentially, it fakes
      receiving a 4 message, 100 bit allocation from the remote host).  It
      takes a connection index (which changes in real time!) for a single
      argument and skip returns if it succeeds.

298.  The manual's example section (Section 14) should be referenced by the
      sections being exampled.

299.  TTYSET function 52 sets the DM width of your terminal to that given
      in the right half of the function word.  This function will be a no-op
      if either your terminal is not already known by the system to be a DM
      or if the given width is not between 16 and 96 inclusive (current
      limits).  For now, the width MUST be a multiple of 8; if it is not,
      then it is truncated to the next lower multiple of 8.

300.  The referenced-date word in UFDs, long-block LOOKUPs, and disk
      retrieval will soon include more info (including a count of days
      referenced) of yet-undefined format.  Programs that use the date
      should AND the word with 0,,77777 before printing to get only the
      date referenced. -- ME

301.  The ICTRAN bit in the IMP I/O status word means that an incomplete
      transmission occured, as of system 9.06/C.  ICTRAN is the 4000 bit.

302.  The IOIMPM bit in the IMP I/O status word means that an IN or OUT
      UUO was attempted when there was no connection open on that channel.

303.  The BLOK bit (100 in IMP I/O status word) indicates that the connection
      is in a RFNM wait.

304.  The IO%RDY bit (2000 in DLN I/O status word) indicates the Dialnet port
      received a good packet from the other side.

305.  The cell UPTIME (pointed to by some lowcore location) counts only ticks
      the system sees, not those it misses, for example while in DDT.  It does
      not count real time, only system-active time.

306.  MTAPE 16 for the disk is permanent really only if file open for writing,
      normally or in RA mode.

307.  As of system 9.06/G, the IOIMPM bit will be set in the DLN I/O status
      work if Dialnet I/O is attempted without an open connection.  Previously
      it stopped the job with an error.

308.  For disk files, the left half of the word containing the date
      referenced now contains a count of the number of days on which the
      file has been referenced (since the date last written).  The count
      is zero for any file that has been referenced only on the date
      written, and the count is incremented once for each day thereafter
      on which the file is referenced.

309.  Bit 5 (10000,,0) of the dump date word (sixth word returned on
      long lookup)is the REAP bit, indicating that DART should P-dump
      twice and then delete the file.

310.  Device VRN is the Varian Plotter, driven from P2.  It can be
      opened only in modes 17 and 117.  The format of data for device
      VRN is exactly like that for device XGP in mode 17 (and 117),
      but the "cut the paper" bit is currently ignored for the VRN
      (in the future it might mean "draw a line of some length on the
      paper so the paper can be cut here later").  The VRN and XGP
      are interlocked such that they cannot both be INITed
      concurrently.  An attempt to INIT one while the other is busy
      will fail or wait (depending on the INIT bits and/or your
      answer to a question about waiting).  It IS possible for both
      of these devices to be concurrently ASSIGNed.

311.  An IOWD for the VRN or XGP in mode 117 that becomes illegal
      because the user changed the IOWD or the user core size while
      the XGP was running in overlapped mode will cause the IOIMPM
      error bit to come on in the I/O status word with major error
      code 16.  The MTAPE that reads the error code will return the
      out-of-bounds user address in ADR+2.

312.  Any error reported by the VRN while data is being transmitted
      to it will generate error code 6, with the error reading MTAPE
      returning in ADR+2 the CONI bits of the VRN at the time of the
      error.  The possible right-half error bits are listed below (some
      other, non-error, bits will probably also be on).

	VNOTOK←←40000  ;Device not ready (e.g., off-line or power off)
	VOFFLN←←400    ;Off-line
	VSUPLO←←200    ;Supplies low

313.  The MTAPE UUO for the VRN takes exactly the same format as the
      MTAPE for the XGP.  However, only MTAPEs 0, 4 and 5 are legal for
      the VRN (since text mode is not implemented for the VRN); each of
      these three MTAPEs does the same for the VRN as it does for the
      XGP.  (MTAPE 4 returns ADR+3 as zero iff any of the above 3 error
      bits were on in the last VRN CONI).

314.  The DWCNT field for the GCW of XGP and VRN dump mode output is
      now one bit bigger than before (now 7 bits wide, consisting of
      the 0,,177 bits of the GCW).

315.  The FILUSR UUO [CALLI 400046] can be used to find out what job(s)
      have a particular file open.  The call is

		MOVEI AC,ARGS
		FILUSR AC,
		 <ERROR RETURN - NOT A DISK DEVICE>
		<NORMAL RETURN>

	ARGS:	SIXBIT /DEV/	;MUST BE DISK OR NEW-STYLE UDP, 0 MEANS DSK
		SIXBIT /NAME/
		SIXBIT /EXT/
		BLK
		SIXBIT /PPN/

	BLK:	BLOCK =16

      On return from the UUO, BLK contains a list of 9-bit bytes,
      terminated with a zero byte.  Each byte contains a job number
      in the rightmost six bits, and a flag in the 400 bit which
      will be on if that job has the file open for output (including
      read/alter mode).  (The job may also have the file open for
      input on another channel.  Each job number will only appear
      once no matter how many channels have the same file open.)
      The 200 and 100 bits in each 9-bit job-number byte are reserved
      for future use.
    [FILUSR now returns a list of 18-bit job numbers.  See item 342 below.]


316.  Clarification: The UPGIOT UUO for a DM or a III copies the text out
      of your core image into system free storage and outputs it from
      there.  So you can use overlapped mode and then clobber the core
      where the program was as soon as the UUO returns (for DMs and IIIs,
      but not for DDs which do the display output directly from your core
      image).

317.  The following interrupt bit was added some time ago.

      Bit  Octal      Name      Interrupt Condition
      21   0,,40000   INTSIX    The PDP-6 has interrupted with a message (or
				something).

318.  Typeout by the TTYMES and NULMES UUOs to any terminal other than
      'TTY' will not be suppressed by typing ESC O (↑O on non-displays).
      Thus you can suppress your own program's output without suppressing
      messages sent to you by other people.

319.  The following TTYSET functions are added:

	53	;GET NOEDIT ESCAPE CHARS
	54	;SET NOEDIT ESCAPE CHAR (SIC)
	55	;GET NOEDIT FLAG
	56	;SET NOEDIT FLAG
	57	;GET HTOGGL FLAG
	60	;SET HTOGGL FLAG
	61	;GET NOEDIT MODE
	62	;SET NOEDIT MODE

55-60 have arguments and values of a single bit.  53 returns a word
with one bit per possible ESCAPE character; the bit is 1 if that
character is in fact an ESCAPE.  The bits are:

	char	octal	bit	octal

	↑@	000	35	1
	↑H	010	34	2
	↑I	011	33	4
	↑J	012	32	10
	↑K	013	31	20
	↑L	014	30	40
	↑[	033	29	100
	↑\	034	28	200
	↑]	035	27	400
	↑↑	036	26	1000
	↑←	037	25	2000

54 takes a character code (ASCII) as its argument.

61 and 62 get and set a 4-bit field.  The TTY must be in a NOEDIT mode
for these to be meaningful.  The four bits are

	bit	octal	meaning

	32	10	ALL-QUOTE mode (including BUCKY-ALLQUOTE)
	33	4	any QUOTE mode (anything but NORMAL)
	34	2	META- or CONTROL-META-QUOTE or -ALL-QUOTE
	35	1	CONTROL- or CONTROL-META-QUOTE or -ALL-QUOTE

All four bits are zero for NORMAL mode.
320.  The sign bit of the XGP right margin word (in MTAPEs 2 and 3,
      read and set margins) means "suppress wraparound when text passes
      the right margin."  With this bit on (the default is off, i.e.,
      text wraps around), any character starting beyond the right
      margin is ignored.  A carriage return, or other explicit column-
      setting command, will cause printing to resume.

321.  The line editor command META-<bs> no longer clear line editor
      insert mode.  This allows NO-EDIT-KEY display users to type
      RUBOUT (which turns into META-<bs>) while in insert mode, just
      like DD users type BS, without clearing the insert mode.  This is
      the only META command which doesn't clear insert mode.

322.  For the XGP, there is a new No-Wraparound mode for text output after
      the right margin has been reached.  In this new mode, all text beyond
      the right margin is ignored, until an explicit absolute column is
      selected, for instance with a CR.  In Wraparound mode (the default and
      formerly the only mode available), a CRLF is inserted and the text
      continues on the next line whenever the right margin is exceeded.

      No-Wraparound mode is enabled by setting the sign bit of the
      right-margin word of the XGP margin setting MTAPE (function 3, sign
      bit of word 5).  The XGP margin reading MTAPE (function 2) returns the
      sign bit of the right-margin word (word 5) as the No-Wraparound mode
      flag.

323.  The MTAPE 5 for XGP and VRN, called "pseudo-close", is useful
      particularly in overlapped video mode (mode 117).  In that mode, when
      you have no more data to output, you should do an MTAPE [5] instead of
      a CLOSE (or at least before any CLOSE) to tell the system that no more
      data is to occur.  If you do a normal CLOSE UUO instead, then you will
      very likely get the I/O status bit IOTEND, meaning "data ran out
      before close done" (which can happen otherwise if you don't always
      have the data ready for the device when it needs it).  A normal CLOSE
      UUO waits for output to finish before it does ANYTHING, but that means
      that the XGP or VRN service routine will run out of data before
      finding out that you have done a CLOSE, so it will turn on the IOTEND
      bit.  And that will make it impossible to tell whether you got the
      IOTEND error actually in the middle of the data, which is where it can
      affect the output.  When IOTEND comes on, the XGP will cut the paper
      and the VRN will slew out the paper.

324.  In the "extended display service", the terminal dependent flags
      formerly kept in the right half of the DMFLAG word of the dpy hdr
      (returned by TTYSET 21) are now kept elsewhere.  See the description
      below of TTYSET function 63, which returns the new bits and more.

325.  The baud rate used for padding, set by TTY PADBAUD and some TTYSET,
      is remembered only to the next lowest 50 baud.  (0-49 map to 0, etc.)
      This precision is not guaranteed to be constant.

326.  Three new TTYSETs: (NOTE: The first two are still subject to change)
	63	Returns information about the current display type of the
		given terminal in the block pointed to by the right half
		of the function word:
		    ADDR+0/sixbit display type name
		    ADDR+1/display height
		    ADDR+2/display width
		    ADDR+3/padding char
		    ADDR+4/padding baud rate
		    ADDR+5/tab flag in low-order bit (bit on if dpy has tabs)
		    ADDR+6/EDITKY LH bits mask,,EDITKY LH bits
		    ADDR+7/DPYDES LH bits mask,,DPYDES LH bits
		    ADDR+10 thru ADDR+13/ reserved for future use
		The sign bits of words 4 & 5 may be on, in order to make a
		set-dpy-type TTYSET function (64, see below) work when
		given back the block returned by this function.  For the
		same reason, the left halves of words 6 and 7 will be
		returned with ones in (at least) the positions for bits
		(in the right half) that can be specified by the user.
		See function 64 below.

	64	Sets the display type of the given terminal from the
		information supplied in the block pointed to by the right
		half of the function word.  The information specified by
		this function is the same as that returned by function 63
		above.  Word 0 of the parameter block should contain the
		official SIXBIT name of some display type that is
		supported by the system; otherwise, this function will be
		a no-op (see the display types listed in
		DISPLA.ME[UP,DOC]).  However, parameter words can contain
		zero to indicate that the default values for the
		corresponding parameters should be used (the defaults
		depend on the display type).  To force word 4 or 5 to be
		non-zero, you can turn on the sign bit (needed if the
		parameter value specified in the right half is actually
		zero -- note that the padding character is not allowed
		to be zero).  Only the right half of each word is actually
		used to set the given value; unused bits in the left
		halves of parameter words should be left zero.

	65	Makes the given terminal NOT a display (like TTY NO DM).

327.  Include the rest of the character codes for the Analex LPT
      (cf Analex Instruction Manual pp1-4:1-5)

328.  Two new TTYSET UUO functions:
	TTYSET function 66 - Re-initialize the display (TTY INITIALIZE).
		The given terminal, which must be a DM-type display,
		is re-initialized, as by the TTY INITIALIZE command.
		This is useful for resetting settable tabs that may
		have gotten clobbered somehow, or for restoring the
		terminal to the correct operating state after being
		powered off, etc.  Function 67 (below) will make the
		system simply reset your tab stops, but without redrawing
		any text; function 66 will simulate a BREAK P to redraw
		the page printer.

	TTYSET function 67 - Set tabs, if any, on display terminal.
		Simply re-sets the tabs for the given terminal, provided
		the terminal is a display with tabs.  Note, however, that
		this function doesn't clear the previous tab stops, so if
		there were some that weren't in multiple-of-8 columns,
		then those bad tab stops will remain, and will probably
		screw up output.  To clear bad tab stops while re-setting
		the right ones, use function 66.

329.  The left half of low-core 343 contains a pointer to the PSB, if
      P1 is a KA (or equivalent, such as F2).  The right half still
      points to the EXPGT.  Both of these are virtual addresses.

330.  The TTREAD UUO now returns (immediately) the last known state of
      the microswitch keyboard keys, and at the same time requests the
      state from the keyboard.  Thus the first TTREAD UUO for a given
      keyboard may return randomness, but subsequent ones should return
      very recent information.

331.  The following warning NO LONGER APPLIES to ANY version of WAITS:
	A spacewar UUO that attempts to reference any accumulators will never
	access the correct set of ACs (whether the AC is referenced
	as an AC or as a memory location); and a UUO that returns
	results in the ACs may in fact return the results in the ACs
	of the job's main process (if the main process is waiting in
	the middle of a UUO), thus clobbering whatever the main process
	had in its AC(s)!
      Spacewar UUOs now reference the ACs correctly on both the KL and the
      F2 versions of WAITS.                             

332.  The UGETF UUO for the disk returns the new record number in the
      right half only of the cell pointed to by the UUO; the left
      half of the destination word is untouched.  And on dectapes in
      UDSD mode, the returned word has the next block to write in the
      LH and the next block to read in the RH).  (The Dectape writeup
      of UDSD mode has the halves of UGETF's result reversed.)

333.  TTYSET 70 returns the LINBIT word for the given TTY.  This word has
      the default line characteristics (in the LH) for that TTY and the
      DCA port number (if any) plus the 400000 bit in the right half if it
      is a DCA TTY.  If the DMLIN bit is on in the LH of the returned
      word, then the TTY is know as a "permanent DM-type display".

334.  User interrupt code for an old style interrupt is no longer ever
      started with the BIS (byte-increment suppress) flag on.  Formerly
      a bug caused this bit to be on for the interrupt routine if this
      bit was on in the trap PC.  This doesn't affect new-style
      interrupts, which get their entire set of PC flags from the left
      half of JOBAPR (with user mode forced on, of course).

335.  TTYSET 71 finds out if the given TTY is enabled (as with TTY EXIST)
      or disabled (as with TTY NO EXIST).  If the given TTY is on the DCA
      TTY scanner and is enabled, then this function returns a value of 1.
      If the TTY is not on the DCA, or if it is on the DCA and is not
      enabled, then this function returns a value of 0.

      TTYSET 72 enables or disables the given TTY (provided it is on
      the DCA scanner).  If the low-order bit of the function word is
      on, then the TTY is enabled, else it is disabled.  This is the
      equivalent of the TTY [NO] EXIST monitor command for the given TTY.

336.  Low-core location 346 contains:
	left half: optimum number of disk buffers for buffered-mode I/O;
	right half: number of data words per track for the disk.
      These numbers will be different at CCRMA and SU-AI since the disks
      are different in size.

337. The following TTYSET functions can now be done even if the
     target TTY is not in use.  (As of 6 May 80.)
	;40	;Set speed
	;41	;Hang up the line
	;70	;Get LINBIT entry for this TTY
	;71	;Get bit indicating TTY's existence
	;72	;Set bit indicating TTY's existence

     Also, the Set-Speed TTYSET (40) is now allowed for any local TTY as
     well as for auto-baud-detect lines.  Here are the possible speeds and
     their representative values for the right half of the function word.
     (See item 243 in this file.)

	Speed	   Index

	110 baud   0
	134.5      1
	150	   2
	300	   3
	600	   4
	1200	   5
	1800	   6
	2400	   7
	4800	   10
	9600	   11
	1200/150   12
	55	   13
	75	   14
	EXT speed  15
	1800/1200  16
     Note that not all TTY ports on the DCA scanner can run at all of
     of the above speeds.  See a wizard for the possible speeds on a
     given TTY.

338.  The NSL privilege is "Negative Service Level", bit 4,,0 in the
      passive privilege word.  With this "privilege", a job won't ever
      be run if any non-NSL jobs are trying to run.  This bit is NOT
      copied to a new job's privileges upon FORK command but currently
      is copied to new job's privs upon SWAP UUO.  See NOTICE[UP,DOC]/273P.

339.  TV camera error pointer:
      As of some time ago (about 1978?), when an error occurs during an
      INPUT from device TV, the number returned in the left half of the
      fourth word of the block pointed to by the INPUT UUO is actually
      the offset from the beginning of the data block of the data word
      where the transfer was terminated.  The UUO Manual claims the
      left half returns a user address, but that is not true; the
      left half returns the offset of the stopping point.

340. (CCRMA WAITS only)  The following bits are in the left half of the
      first word of the block pointed to by a UPGIOT or DDUPG UUO; the
      program will be made to output to the F2's Grinnell displays.
	2,,0		Interpret this as a III program
	4,,0		Interpret this as a Grinnell program
      If both of these bits are off, then the program is interpreted
      as a DD program (DD interface commands).

341.  The SETPRO UUO can be used to set the protection of the lower
      segment of the issuing job, but only by explicitly specifying the
      number of that job in the AC used in the UUO.  You cannot set the
      protection of any other lower segment.  The purpose of this feature
      is to allow modifying the lower's protection without affecting its
      creation date (see the SETCRD UUO), before creating an upper segment
      which will automatically copy the protection and creation date of
      the lower segment.

342.  The FILUSR UUO now returns 18-bit job number bytes in the =16-word
      block, with a maximum of =31 job numbers, plus a zero byte at the
      end.  If more than =31 jobs have the given file open, only =31 of
      them are reported (and a more or less randomly selected =31 jobs at
      that).  The Write flag returned in a job-number byte if the job is
      writing the given file is now the 400000 bit of the byte.  The
      370000 bits in the byte are reserved for flags and the 7777 bits in
      the byte hold the job number.

343.  The POINTS UUO now returns a maximum of =63 job numbers even if
      more than =63 jobs are sharing your upper segment.

344.  The job number byte in device DDBs has been moved.  The new byte
      can be found by using the byte pointer in the new lowcore cell 347,
      and indexing with the address of the beginning of the DDB.  The
      unit number byte will move very soon, but it can already be found
      by using the byte pointer in the new lowcore cell 350, and indexing
      with the address of the DDB.

345.  The DDCHAN UUO has changed the format of the returned channel usage
      code to allow for bigger job numbers.  The new format is similar to
      the old, but the 100 and 200 bits are now 10000 and 20000, AND:
      the TTY number returned with the 10000 bit is now relative to zero
      instead of to the first DD line number.  The 7777 bits hold the job
      number if bits 2:5 are zero, or hold the TTY number if bits 2:5 are
      1, or hold the special use code if bits 2:5 are 2 (special code 0
      is available channel, special code 1 means detached from system).
      The DDTAB table in the system has been similarly changed.

346.  The max job number has been changed from 63 to 79.

347.  Two new CALLIs:
	MOVE AC,[privilege bits]
	PRVIOR AC,	CALLI AC,400132

	MOVE AC,[privilege bits]
	PRVACM AC,	CALLI AC,400133
      The first turns on privileges selected by bits on in the AC, and
      the second turns off the selected privileges.  The turning on and
      off is done in the job's active privileges, except for those
      privileges which are normally tested from the passive privilege
      word, currently LUP, NSL, LIV, and DET.

      Both UUOs return in the AC the job's current privilege status,
      meaning the active privileges except that the four mentioned
      above are taken from the passive privileges.  This combined
      privilege word is the right thing to give the SETPRV UUO to
      restore the current state of privileges.  Note that the value
      returned by SETPRV itself is NOT the right thing, because in
      that returned value all but LUP are taken from the active
      privileges.

      The sequence
	MOVE AC,[2,,jobnumber]
	GETPRV AC,
      will return the correct combined privileges without setting or
      clearing anything.  PRVIOR, of course, checks the legality of
      the privileges you want to set; PRVACM lets you clear anything.
348.  There are now terminal-input macros available on all terminals.
      Such macros make it possible to type a short string of characters
      (possibly one character) to get the effect of typing many
      characters.

      There are two types of macros available: the ESC # CR macro and the
      NOEDIT-display macro.  The CHRMAC and GETMAC UUOs have been made to
      work for defining and returning definitions for ESC # CR macros as
      well as for NOEDIT macros.

      See MACROS.ME[UP,DOC] for a complete description of terminal-input
      macros and how to define and call them.

349.  The sequence
	MOVEI AC,'SSW'
	SPCWGO AC,
      stops your spacewar process just like SPCWAR 'SSW' does.  In both
      cases, the "startup interval" must be zero.  Of course SPCWAR 'SSW'
      only takes one instruction to stop spacewar instead of two for the
      other form.

350.  (This entry should have been included around entry 346 above, but
      was accidentally omitted.)  The DEVUSE UUO returns the job number of
      the device's owner in bits 8:17 (1777,,0) instead of just 12:17,
      since job numbers can now be more than 6 bits wide.

351.  17 Dec 80	ME: The default TTY width has been changed to =80 (from =84).

352.  23 Dec 80 ME: The DEVUSE UUO will return the 400000,,0 bit on and a
      zero job number field if (but not only if) the device is sharable
      but detached from the system.  Also, the ASSCON bit in the model DDB
      for a sharable device will be on if that device is detached from the
      system.

353.  8 Jan 81 ME: The unit number field in the DDB has been moved to make
      room for a bigger field (to allow for more TTY numbers).  Programs
      that want to use this field should access it with the byte pointer
      provided for this purpose in lowcore exec location 350; use that
      byte pointer and index with the address of the DDB.  Also, the
      maximum number of TTYs has been increased; the maximum (currently
      220) can be obtained by adding up the four 9-bit bytes in lowcore
      location 221 (see the UUO Manual).

354.  16 Jan 81 ME: Note that there is only one record pointer maintained
      by the system for disk files, so that USETI and USETO actually set
      the same pointer (although they may do different things to process
      or flush any previously set up buffers).

355.  25 Jan 81 BH: The TTYIOS UUO, if its argument is the negative of a
      legal channel number (i.e. between 0 and -17), returns the IOS for
      that channel's DDB in your own job.  This differs from the GETSTS
      UUO in that the latter (contrary to what the manual says) returns
      only the right half of IOS.

356.  1/26/81 MRC: Include PUPPY.DOC[SS,SYS].

357.  2/16/81 ME: The ELFQIK bit (0,,400) in ELF IO status means do ELF
      output without waiting for the ELF (no CONSO in the output loop).
      This is dangerous since it doesn't check for the ELF being ready,
      but it can speed up output because the CONSO takes a while.

      4/7/81 ME: The ELFQIK bit (0,,400) in ELF IO status also makes
      input occur without waiting for the ELF (no CONSO in the input loop).
      This is dangerous since it doesn't check for the ELF being ready,
      but it can speed up output because the CONSO takes a while.

358.  2/22/81 ME: In the PPACT UUO, if the low-order bit of the effective
      address is on, then the UUO will not erase any PPs being deactivated
      by the UUO.  Normally, PPs being deactivated are explicitly erased
      on DDs and DMs.  This erasure suppression is intended for display
      programs that are going to do their own erasing of the screen and
      which therefore do not want extraneous erasing done by the system
      that might come after the program is displaying some text.  This
      non-erasure does not apply to IIIs, which can't have this timing
      problem anyway.

359.  2/22/81 ME: For the PPREL UUO, the manual suggests that on DDs and
      DMs, Pieces of Paper being released do not get erased.  This is not
      true; they do get erased (explicitly by the system).  However, only
      those lines of the PP that have actually held page printer text will
      be erased and because of a bug in the system the last of these is
      NOT erased.

      Beginning now, however, PPREL will not erase a PP that is not
      currently activated.  So you can prevent the erasing of a PP to be
      released by deactivating it first (with PPACT, using the feature
      described in 358 above, e.g., by doing a PPACT 1 before the PPREL).
      Note that PPREL is done by DPYCLR, which is done by RESET, which is
      done by EXIT.

      As a result of this change and that in 358 above, the following
      sequence can be used by a display-oriented program that is exiting
      and that wants to normalize the screen without first explicitly
      erasing whatever display it has previously put up.  This sequence
      erases the whole screen, normalizes the page printer, redraws the
      text of the normal page printer (PP 0), and exits:

      PPACT 1                 	;Deactivate all PPs, without erasing any.
      HRROI AC,[4000,,400+"N"]	;TTYSET code to do a BRK N to erase the screen
      TTYSET AC,              	;  and start redrawing normal PP.
      EXIT                    	;Exit and reset everying, PPRELing all but PP 0.

      Of course, a better program will erase exactly what it had put up on
      the screen, so that it won't have to do the BRK N (which often
      erases more than necessary, thus requiring more to be redrawn next).

360.  It should be noted (in Section 9) that INTTTY interrupts
      can also come from any TTY you have INITed (or ASSIGNed).

361.  The INTQUIT interrupt (0,,2000 bit) is generated for the job owning a
      PTY on which the QUIT monitor command is given.  This interrupt is
      intended to tell the owning job (server) to close the network
      connection for the PTY on which the command is given.

362.  Three new UUOs allow the user program to specify which interrupts
      should cause its interrupt level process to be run (as usual, at the
      address given in JOBAPR).  The interrupt level process need not be
      run if all it would do for the particular interrupt is a DISMIS.
      Avoiding running this process will save some otherwise wasted
      rescheduling that is done to start and stop the process.  There is an
      Interrupt-Run Mask that specifies the bits for those interrupts that
      should cause the I-level process to be run.  The three new UUOs are:

	IRUMSK [mask]		;sets the mask to that given
	IRUMST [new bits]	;turns ON the given new bits in the mask
	IRUMCL [old bits]	;turns OFF the given old bits in the mask

      The old UUO INTDMP now returns the current mask in word three of the
      block of data returned (formerly, a zero was returned there).

      This new mask defaults to -1 (all interrupts cause interrrupt-level
      process to be run).  RESET also resets this mask to -1.

      Thus if your entire interrupt-level process consists of just a
      DISMIS UUO, then you should use IRUMSK [0] to prevent the
      interrupt-level process from being run for any interrupts.  This
      will not keep the interrupts from waking up your program's main
      process; if it is in INTW queue waiting for an interrupt, it will
      still be awakened according to the wakeup mask set by the IWKMSK
      UUO.

363.  The INTTTC interrupt (100000,,0 bit) is generated for the job
      attached to or owning (via INIT or OPEN, or as the creator/owner of
      a PTY) a terminal whose display type changes (as from TTY DM or TTY
      NO DM).  Change of non-display type does not generate this interrupt
      (e.g., TTY GLASS doesn't do it).  (This has been true for a long
      time, but wasn't completely documented.)

364.  In the PPINFO and PPSPY UUOs, bit 4 of word 23 is on iff the
      display's line editor has wrapped around (used two display lines)
      since the last time that display's job gave a PPINFO UUO.

365.  Bit 7 (2000,,0) in the DIAL UUO function 2 (dial a number) now
      means "dial out with 103 or 212 type modem".  If this bit is off,
      Vadic 3400 type modem is dialed out on.  (This bit formerly was
      reserved for switching phone to AD/DA.)  Also, since the Vadic
      dialer has replaced the old dialer, the DIAL UUO no longer returns
      any CONI bits, but instead returns a code indicating the outcome
      of the dialing.  See a wizard or the DIAL program for the codes.

366.  TTYSET UUO operations 53 (get ESC chars) and 54 (set ESC chars)
      now apply to EDIT-key as well as NOEDIT displays.  However, since
      an EDIT-key display can have at most one non-NUL ESCAPE character,
      the set ESC operation undoes any previous definition of an ESC
      character, and the get ESC operation returns exactly one bit on.

367.  The size of the system's TTY input buffer for each TTY has been
      changed from 30 (octal) words to 60.  Programs that think they
      know what this size is may find out that they don't any more.

368.  ∂10-Nov-82  1256	DRF  	uuo manual complaint    
      The SEGNUM UUO bombs your job out if the AC has an illegal job
      number.  The manual ought to mention this, at least.

369.  The RESET UUO does not kill all your detached upper segments
      like it claims to.  Instead, those segments are killed when
      you get another core image (e.g., via GET command or SWAP UUO)
      or when you do a CORE 0 command.

370.  The DIAL UUO has a new error code, 10 (octal), which means
      that the dialer timed out.  Usually this means the dialer
      itself or its terminal line to the system (the DCA port) isn't
      working.  When this happens, a wizard should probably be
      notified.  Error codes 5, 6 and 7 were new recently; 5 (no
      system DDB for dialer) and 6 (dialer's TTY output buffer
      overflowed) shouldn't happen, but indicate a system error if
      they do.  Error code 7 means that the number to be dialed
      contained a dialing digit greater than 9 (user error).
371.  The IMP is now run using the IP/TCP protocols.  The major differences
      between this and NCP are as follows:  Connections are now two-way (no
      separate send and receive connections).  Sixteen-bit port numbers replace
      32-bit sockets, with odd or even always legal.  There is no more initial
      connection protocol; you just start talking to the Telnet port (for
      example) of the foreign host.  The transfer byte size of a connection is
      always 8 bits.  The kludge involving marking of padding bytes is gone;
      buffer headers now always contain the correct byte count.

      Bits 1-4 of the IMP status word, returned by MTAPEs, retain their
      approximate former meanings, but these are derived from the state of the
      TCP connection, which gives more accurate information.  Other bits in the
      left half are no longer set, and the list of error codes includes the
      following new errors:

	10 State error
	11 Can't get there from here
	12 Not enough internal buffer space
	13 Illegal host number
	14 Destination net unreachable
	15 Destination host unreachable
	16 Destination protocol unreachable
	17 Destination port unreachable
	20 Fragmentation needed and DF set
	21 Source route failed
	22 Destination unreachable: unknown code

      Some of the old error codes can no longer happen.

      Bits in the I/O status word mean the following:

       Bit	Octal	Name	Meaning

	19   0,,200000	IODERR	Set along with other bits for most errors
	20   0,,100000	IODTER	(no longer used)
	22   0,,20000	IODEND	End of file
	25   0,,2000	HDEAD	Foreign host dead
	26   0,,1000	IODATA	There is data ready for input
	27   0,,400	RSET	TCP reset received
	28   0,,200	TMO	Timeout

      INTINR and INTINS interrupts are no longer possible.

      Changes to IMP MTAPEs are as follows:

	 0 (CONNECT):  Address must be in IP format (32 bit IP address,
	   right-adjusted in word).
	 1 (LISTEN):  You may specify -1 in ADR+2 to gensym a local port.
	   Non-zero values in ADR+5 and/or ADR+6 indicate that you want to
	   listen for a specific host or foreign port number.  Otherwise any
	   host and port will be allowed, and returned in those words if a
	   connection was made.
	 2 (GET STATUS):  Returns the same values in both words.
	 3 (TERMINATE):  Send & receive socket distinction not made.  Local port
	   number may be 0; otherwise must be port for this channel.
	 4 (WAIT):  Local port may be 0; otherwise checked as in MTAPE 3.
	 5 (DUMP):  Not yet implemented.  Causes a UUO error.
	 7 (GET LISTEN INFO):  Local port word always filled in with current
	   port number.
	11 (SEND INTERRUPT):  Currently a no-op.  Just returns status bits.
	14 (TEST & CLEAR INTERRUPTS):  Always sets both words to 0.
	15 (ALLOCATE):  Currently a no-op.
	16 (GET ALLOCATIONS):  Bit allocations are always a multiple of 8.
	   Message allocations are always returned as 0.
	17 (SET TIMEOUTS):  RFNM timeout no longer has any effect.
	22 (ABORT): Aborts a TCP connection.  Returns status in ADR+1.
	   Formerly sent an NCP host reset, requiring UPG privilege.
	24 (UNWEDGE):  Now illegal.

      MTAPEs not in the above list retain their former functions.

372.  New IMP MTAPE 25 sets TCP push handling on output.  ADR+1 is 0 to set the
      push bit whenever finished outputting a buffer; 1 to set the push bit on
      the next buffer but not on future buffers until closing the connection; 2
      to push only on connection close.  If this MTAPE is not given, every
      buffer is pushed.

373.  WAITS now sends and receives IP packets on the Ethernet, as well as the
      ARPAnet.  Host numbers are network-dependent (SU-AI's IP host number for
      the ARPAnet is 10.0.0.11; for the Ethernet it is 36.40.0.194, though at
      some point in the future it will change to 128.12.40.194), but MTAPE 1
      (LISTEN) will succeed on incoming connections to either host number.  In
      some cases programs need to be aware of which host number their connection
      is associated with; for example, an FTP program issuing the PORT command.

374.  IMP MTAPEs 1 (Listen) and 7 (get connect block info) return the same
      data, and this data now includes local IP host number in use on the
      connection in the wait-flag word (word 3) of the block.  If no
      connection is open, the local IP host number returned may be zero.

375.  The .SYML UUO will succeed even if the given symbol is multiply
      defined, provided all such definitions for it have the same value.

376.  Along with IMP, the device PUP no longer uses the low order bits of buffer
      words to indicate padding bytes in 8-bit byte buffers.  The byte pointer
      is used to check for padding on output, and the correct byte count is
      returned on input.

377.  Low core locations:
	352/WHOIMP,,WHOPUP	;ptrs to info blocks for devices IMP and PUP
	354/-NNETS,,NETLST	;aobjn ptr to networks the local host is on
	355/-NHOSTS,,HSTLST	;aobjn ptr to host numbers for the local host

378.  Low core location:
	263/WATCPU,,WATSIT
      WATCPU indicates what CPU type this particular WAITS system has, namely:
	    0 for KA-10 or F2, and
	    1 for KL-10.
      WATSIT indicates which WAITS site this is, namely:
	    0 for SU-AI,
	    1 for CCRMA, and
	    2 for S1-A.
      Thus, at SU-AI, 263 contains 1,,0.  This word can be used to by programs
      that need to distinguish the different WAITS systems and CPUs.

379.  In the UPGIOT UUO, a new escape sequence exists for including text
      characters below 40 octal in a display program with DMQUOT on.  In DMQUOT
      mode, normally all bytes below 40 are taken as display control commands
      (such as clear screen, clear to end of line, etc.).  The normal quoting
      mechanism of preceding a byte with a 177 also forces that byte to be
      interpreted as a display control character, so this quoting is not useful
      in DMQUOT mode.  Therefore the escape sequence 177 41 X, where X is any
      character, will cause X to be taken as normal text to be displayed.  Since
      display control characters normally have to quoted (individually with 177
      or in general with DMQUOT), the sequence 177 41 X is said to "unquote" the
      character X.  This will work even if DMQUOT is off, but in that case a
      simple X would do the same thing.  "Unquoting" a character X is useful in
      DMQUOT mode, with X being 175 or 176 or below 40; for X=175 or 176, DMQUOT
      mode suppresses the conversion of X from the WAITS character set to ASCII,
      but 177 41 X will allow this conversion, as X is taken as normal text in
      this case.  ** If the X in 177 41 X is 0, 11, 12, or 15, note that it will
      not be displayed as a text character, but rather have its normal text-mode
      interpretation, namely, 0 will be ignored, 11 will be a tab, 12 will be a
      linefeed, and 15 a carriage return.

380.  Several changes have been made to IP/TCP service; item 371 above now
      contains the new information.  MTAPE error codes and I/O status bits are
      the major thing that has changed.

381.  New CALLI:
	MOVE AC,[<device name in sixbit, or channel number>]
	BLKLEN AC,	CALLI AC,400134
      Returns <optimum buffer count>,,<block length in words> in AC.  Returns 0
      if no such device, or device not a disk.  For the main filesystem
      structure, this is the same information that is stored in lowcore 346.

382.  For the DEVUSE UUO, add device PUP to the list of devices for which this
      UUO always returns zero in bits 0 and 1.  Similarly for the DEVCHR UUO and
      bits 18 and 19.  Device SIX no longer exists.

383.  IMP MTAPE 22, which formerly sent an NCP host reset (requiring the UPG
      privilege enabled), now aborts the connection on its channel by sending a
      TCP reset, and no longer requires UPG.  Status bits are returned in ADR+1.
      Item 371 above has been changed.

384.  Echoing of system-inserted linefeeds on FULTWX terminals does not apply to
      IMPBIT terminals, since it is assumed that the foreign host is including
      them in its local echoing.

385.  IMP MTAPE 5, which under NCP returned pointers to system tables, now shows
      various status information about the connection on the channel that it is
      given for.  The format is as follows:

	MTAPE <chan>,ADR
ADR:	5
ADR+1:	number of words desired
ADR+2:	I/O status (same value as returned by GETSTS UUO)
ADR+3:	status bits (the value returned in ADR+1 by many MTAPEs)
ADR+4:	connection state
ADR+5:	local host
ADR+6:	local port
ADR+7:	foreign host
ADR+10:	foreign port
ADR+11:	network host (gateway, if different from foreign host)
ADR+12:	IP protocol
ADR+13:	input window					(TCP)
ADR+14:	output window					(TCP)
ADR+15:	current retranmission timeout time		(TCP)
ADR+16:	next sequence number to be received		(TCP)
ADR+17:	next sequence number to be sent			(TCP)
ADR+20:	next sent sequence number to be acknowledged	(TCP)

      You must supply in ADR+1 the number of words of information that you want
      returned.  (Currently =15 values is the maximum possible.)  If more values
      are ever added to the table, this will allow old programs to run without
      error.  Those entries marked (TCP) have meaning only if the connection is
      a TCP connection.  (As opposed to UDP or other protocols.)

386.  The IP User Datagram Protocol (UDP) is available using the device IMP.  It
      is not possible (or meaningful) to intermix UDP and TCP operations on the
      same IMP channel.  However, a closed IMP channel may be reused for either
      TCP or UDP without releasing it.

      The IN and OUT UUOs are used to read and send UDP packets.  Each IN or OUT
      always corresponds to a single packet.  On input, if the packet is longer
      than the user buffer, the UUO will fail with the IOBKTL bit set in the I/O
      status word.  On output, the data must fit in a single buffer.  If you try
      to send more than the system can put in a packet, output will fail with
      IOBKTL set in the I/O status word.  Either buffered or dump mode may be
      used, but buffered mode is recommended since there is no way to specify an
      exact byte count in dump mode.

      While there is no "connection" as in TCP, you still have to tell the
      system the foreign host and port number and the local port number
      associated with the I/O channel.  They must all be non-zero if the first
      I/O operation is an output (the local port may be -1 to ask the system to
      assign a free port), but the foreign host and port may be 0 when doing
      input, to ask for packets from any foreign host and/or port.  If this is
      done, then when a packet is read the foreign host and port will
      automatically be set to the values in that packet, so that subsequent
      input and output will use those values, unless they are reset to 0.

      When a packet arrives that matches your connection, it will be discarded
      if there is a previous packet waiting that you have not read yet.  This
      should not get in the way of most applications, since they typically
      involve an exchange of single packets, or acknowledgement of each packet
      before the next is sent.

      The following IMP MTAPE has been added to support UDP:

	MTAPE <chan>,ADR
ADR:	26			;Set UDP host and port
ADR+1:	<status bits returned>
ADR+2:	<local port>
ADR+3:	<unused>
ADR+4:	<unused>
ADR+5:	<foreign port>
ADR+6:	<foreign host>

      This MTAPE first discards any UDP packets waiting to be read, and then
      sets the host and UDP port numbers for the I/O channel.  The <local port>
      may be -1 if you want the system to generate a new port number; in that
      case the number generated will be returned in ADR+2.  The foreign host and
      port may be 0 (to match any host and/or port) if you read a packet before
      you attempt to write one.

      An error code will be returned in ADR+1 if you are not in the right state
      to perform this operation (i.e., you have an open TCP connection).

      After a successful return, subsequent input and output UUOs on this
      channel will read and send UDP packets as described above.

      The following IMP MTAPEs are meaningful for UDP as well as for TCP:

	 2    Get status bits
	 5    Extended status
	 6    Wakeup main process from interrupt level
	 7    Get local port, foreign port, and foreign host
	10    Skip if input waiting
	17    Set timeouts
	20    Get timeouts

      The only timeout value that is used in UDP is the input timeout.
387.  Device MTU0 is a TU-78 9-track magtape drive, capable of writing at
      1600 or 6250 bpi.  The density is specified by the device I/O status
      word, bits 27:28.  If both are on, the density will be 6250; otherwise
      the density will be 1600.  Note that when reading a tape, the TU-78
      automatically senses and selects the density at which the tape was
      written.  For use of DART and COPY with the TU-78 (MTU0), see
      MONCOM.UPD[S,DOC].

388.  The following ages-old fact has apparently not been documented before.
      When a user types a carriage return with any combination of bucky bits
      (CONTROL and/or META), the CR appears in the TTY input buffer without
      any bucky bits followed by a LF with whatever bucky bits were typed.

389.  Lowcore location 357 contains bits indicating which spoolers exist at
      the particular WAITS sites.  The bit for a spooler is on if and only
      if that spooler/printer exists at this site.  The bits are (in octal):

	1(xgp), 2(lpt), 4(dover), 10(boise), 20(imprint), 40(esp),
	100(rover), 200(plover)

390.  Another ages-old fact is that the system will not allow you to have
      a piece of paper smaller than 2 lines.  The DPYSIZ UUO, if given an
      arg specifying a 1-line piece of paper, will give you a
      2-line piece of paper (1 glitch of 2 lines).

391. New CALLI to manage network interfaces:

NETUUO          [OP=047, ADR=400135]  CALLI 400135
--------------------------------------------------
        MOVEI  AC,ADR
	NETUUO AC,
        <error return>

ADR:    <function code>
        <network name in sixbit>
        <data>

NETUUO is used to perform various operations on networks attached to the
system.  Note that this refers to physical networks, not network protocols;
protocol operations are performed by means of network devices.

The set of valid <network name> entries is system-dependent and may change
if new networks are added to the system.  One of the NETUUO functions (see
below) returns a list of values legal for <network name>.

Function	Description
--------	-----------

   0		Illegal.

   1		Return list of network names.  <data> is [-N,,BUF] where BUF
		is an array of size N which will be filled in with the names.

   2		Get status of a network.  The right half of <data> is set to
		0 if the network is marked down, -1 if up.  The left half of
		<data> is set to 0 if the network is actually down, -1 if up.

   3		Take network down.  Tells the system to stop using this
		network immediately.  Requires the DEV privilege (passive).

   4		Bring network up.  Tells the system to resume using this
		network.  Requires the DEV privilege (passive).

392. IMP MTAPE 12 now reinitializes the Internet NCP; requires DEV passive
     privilege.  IMP MTAPE 13 (turn off IMP) is no longer legal; use
     NETUUO to turn off individual networks, or detach device IMP to make
     it unusable.

393.  SPOOLR UUO -- Get info about available spoolers on this system.

SPOOLR          [OP=047, ADR=400136]  CALLI 400136
--------------------------------------------------
	MOVEI AC,ADR	     ;find spooler named in block below, return jobname/ext
	  or
	MOVE AC,[-LTXT,,TXT] ;return list of all spoolers' names via this aobjn ptr
	SPOOLR AC,
	 <error return, code in AC>
	<success return>

Block for specifying one spooler and returning info about it.
An abbreviated printer name is allowed, provided it is not ambiguous.
Case of letters doesn't matter in ASCIZ printer name.
On error return, AC will contain 0 if no such printer name was found,
or AC will contain 1 if printer name was ambiguous.

ADR:	<spooler's sixbit jobname returned here>
 +1:	<spooler command file ext returned here in LH>
 +2:	PRNAME

PRNAME:<user-supplied ASCIZ printer name, can be abbreviated>

If AC is negative upon call to SPOOLR UUO, the left half of AC is taken
as a negated word count (here, -LTXT) and the
ASCII names of all available spoolers are returned at the location
pointed to by the right half of AC (here, TXT).  Each name returned is
followed by a space.  A null ends the list. 
E.g.: "Maple Boise Dover Rover Lathrop(private) <null>".
If more than LTXT words are needed for the list of names, as many names
as fit in LTXT words are returned, the UUO takes the direct return
with error code 2 in the AC, and the last name returned may be truncated,
but the list returned will still be terminated with a null, in the last
byte of the block specified.

TXT:	BLOCK LTXT		;block for ASCIZ list of returned ASCII names